'''
手动处理数据流程
1.获取需要处理的受试者编号
2.根据受试者编号和目录地址,和数据类型,得到该文件的列表（ecg或者rr可能存在多个）
3.拿到文件列表后for循环转换为df,再放入合并,得到该文件的单一的df
4.查看是否需要手动处理该文件，如果需要则调用函数处理，处理完后存入deal作为该文件的处理结果


'''

'''
根据数据筛选形成最终数据集
1.手工导入受试者室内跑步的试验记录，用户信息

2.根据ecg中的数据和对应试验记录（先做手工更正数据），生成试验阶段的df，然后去试验记录表中拿到速度和对应的乳酸值加入
数据格式为  编号，阶段，状态，速度，开始时间，结束时间，生理RPE，心理rpe，la浓度，hrlist，rrlist


'''


import os
from data_deal.Problem_handling import handing_person
from data_deal.function import  data_to_csv, df_get, stage_divide, stage_get,stage_add_polar
import pandas as pd
import numpy as np

rootpath='D:\\学习&科研\\华为手表项目\\华为数据\\subject'
typelist=['ecg','rrdata','singledetail','singlework','rri','ppg']
deal_path='D:\\学习&科研\\华为手表项目处理\\deal6'
record = pd.read_csv('D:\\学习&科研\\华为手表项目\\华为数据\\base-data\\室内试验记录_不完全.csv')
errorlist=[]

all_stages_df=pd.DataFrame()

for index,rec in record.iterrows():
    number=rec['number']
    try:
        print(rec['number'],'正在处理')
        number=rec['number']
        # 读取 CSV 文件
        data_to_csv(number,rootpath,typelist,deal_path)
        handing_person(number[:4])
        ecg_df,rrdata_df,ppg_df,rri_df,singlework_df,singledetail_df=df_get(deal_path,number)
        
        
        #使用for循环，将每个人的stage信息读取后,再使用rrdata，添加每个阶段的数据添加到一个总文件
        base_stages=stage_get(number,record,ecg_df) 
        # print(base_stages)

        stages_polar=stage_add_polar(base_stages,rrdata_df)
        
        all_stages_df = pd.concat([all_stages_df, stages_polar], ignore_index=True)
        
        # 保存当前的总 DataFrame 到文件
        all_stages_df.to_csv('D:\\学习&科研\\华为手表项目\\华为数据\\base_data\\all_stages_df2.csv', index=False)
    

    except Exception as e:
        errorlist.append([number,e])
        print(f"Error processing record {number}: {e}")

with open('D:\\学习&科研\\华为手表项目\\华为数据\\base_data\\errorlog.txt', 'w') as f:
    for error in errorlist:
        f.write(f"{error}\n")